﻿using System;
using System.Data;
using XWG.Framework.MSException;

namespace XWG.JWBST.Translate
{
    /// <summary>
    /// 翻译类
    /// </summary>
    public class Translate
    {

        /// <summary>
        /// 将某指定的值转换成对应的中文
        /// </summary>
        /// <param name="key">要转换的字符串</param>
        /// <returns>转换后的中文</returns>
        public static string ToChinese(string key)
        {

            return FieldToChinese.Instance().GetText(key);

        }
        protected static bool checkIsChinese(string txt)
        {
            string num = @"^[\u4e00-\u9fa5],{0,}$";
            System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex(num);
            return re.IsMatch(txt);
        }
        /// <summary>
        /// 将数据集中的所有列转换成对应的中文后返回
        /// </summary>
        /// <param name="oDS">要转换的数据集</param>
        /// <returns>转换后的数据集</returns>
        public static DataSet ToChinese(DataSet oDS)
        {
            int i;
            string chineseStr = "";
            try
            {
                if (oDS != null)
                {
                    if (oDS.Tables.Count > 0)
                    {
                        for (i = 0; i < oDS.Tables[0].Columns.Count; i++)
                        {
                           
                                chineseStr = FieldToChinese.Instance().GetText(oDS.Tables[0].TableName + "." + oDS.Tables[0].Columns[i].ColumnName);
                                //if (checkIsChinese(chineseStr))
                                //{
                                if (!chineseStr.Contains("."))
                                    oDS.Tables[0].Columns[i].Caption = chineseStr;
                                //}
                            //oDS.Tables[0].Columns[i].ColumnName=FieldToChinese.Instance().GetText(oDS.Tables[0].Columns[i].ColumnName);
                        }
                    }
                }
                return oDS;
            }
            catch (Exception ex)
            {


                MSEx.DealErr(ex, "");
                return oDS;
            }
        }
        /// <summary>
        /// 将数据集中的所有列转换成对应的中文后返回
        /// </summary>
        /// <param name="oDS">要转换的数据集</param>
        /// <returns>转换后的数据集</returns>
        public static DataSet ToChineseEx(DataSet oDS)
        {
            int i;

            try
            {
                if (oDS != null)
                {
                    if (oDS.Tables.Count > 0)
                    {
                        for (i = 0; i < oDS.Tables[0].Columns.Count; i++)
                        {
                            //oDS.Tables[0].Columns[i].Caption = FieldToChinese.Instance().GetText(oDS.Tables[0].Columns[i].ColumnName);
                            oDS.Tables[0].Columns[i].ColumnName = FieldToChinese.Instance().GetText(oDS.Tables[0].Columns[i].ColumnName);
                        }
                    }
                }
                return oDS;
            }
            catch (Exception ex)
            {
                MSEx.DealErr(ex, "");
                return oDS;
            }
        }
        /// <summary>
        /// 将数据集中的所有列提取后转换成中文
        /// </summary>
        /// <param name="oDS">要转换的数据集</param>
        /// <returns>转换后返回数据表</returns>
        public static DataTable GetChineseColumn(DataSet oDS)
        {
            DataTable oDT;
            DataRow oDataRow; ;
            int i;

            oDT = new DataTable("ChineseColumn");
            oDT.Columns.Add("OldColumn");
            oDT.Columns.Add("ChineseCol");

            try
            {

                if (oDS != null)
                {
                    if (oDS.Tables.Count > 0)
                    {
                        for (i = 0; i < oDS.Tables[0].Columns.Count; i++)
                        {
                            oDataRow = oDT.NewRow();
                            oDataRow[0] = oDS.Tables[0].Columns[i].ColumnName;
                            oDataRow[1] = FieldToChinese.Instance().GetText(oDS.Tables[0].Columns[i].ColumnName);
                            oDT.Rows.Add(oDataRow);
                        }
                    }
                }
                return oDT;
            }
            catch (Exception ex)
            {
                MSEx.DealErr(ex, "");
                return oDT;
            }
            finally
            {
                oDataRow = null;
            }
        }
    }
}
